////////////////////////////////////////////////////////////////////////////////
// Includes
////////////////////////////////////////////////////////////////////////////////

#include "Plugin.hpp"
#include <iostream>

// Namespaces
using namespace SC;
using namespace std;

////////////////////////////////////////////////////////////////////////////////
// Plugin init and exit
////////////////////////////////////////////////////////////////////////////////

void InitPlugin (const string & prog_name) {
	cout << "Intialising plugin for program '" << prog_name << "'" << endl;
}

void ClosePlugin () {
	cout << "Closing plugin" << endl;
}

////////////////////////////////////////////////////////////////////////////////
// SC Callbacks
////////////////////////////////////////////////////////////////////////////////

bool Interact (SCSystem &, const SCSystem &, SCSystem &) {
	cout << "Interaction" << endl;
	return true;
}

bool Inject (SCSystem & sys, const SCSystem & ctx, SCSystem & scope) {
	return scope.TakeFromSuperSystems(sys,ctx);
}

bool Eject (SCSystem & sys, const SCSystem & ctx, SCSystem & scope) {
	return scope.ReleaseToSuperSystems(sys);
}

////////////////////////////////////////////////////////////////////////////////
